\chapter{Achtergrond}
\label{Achtergrond}
In dit hoofdstuk worden enkele algemene begrippen toegelicht. De thesis speelt zich af in de omgeving van een web mashup. Het begrip web mashup zal daarom eerst nogmaals besproken worden.
Een belangrijk concept in deze opstelling is de Same-Origin Policy. Ook die zal toegelicht worden, gevolgd door het belang van JavaScript binnen de opstelling.

\section{Web mashups}
Tegenwoordig zijn er steeds meer dynamische websites te vinden op het internet. 
Deze zijn dynamisch op verschillende manieren. Enerzijds omdat de data die getoond wordt afhankelijk kan zijn van gebruiker tot gebruiker,
en anderzijds kan de actieve gebruiker ook zelf inhoud toevoegen aan websites. Dit in tegenstelling tot de statische websites, 
waarbij kant-en-klare HTML-pagina's op de webserver staan te wachten om opgevraagd te worden door een gebruiker.

Een aansluitende trend is het toenemend aantal web mashups, 
waarbij een website \textit{(de integrator)} functionaliteit en/of gegevens van derden toevoegt \textit{(third party componenten)}. 
Dit om als resultaat een nieuwe flexibele client-side applicatie te verkrijgen, met de bedoeling een toegevoegde waarde te bieden. 
Bijvoorbeeld een formulier waar een adres ingegeven moet worden. Vroeger werd dit meestal gedaan door een input veldje
waar men plain text moest invoeren met o.a. straat, plaats,..
Dit kan nu bijvoorbeeld worden vervangen door gebruik te maken van een google maps plugin.
In dit geval is de website met het formulier de integrator, en de google maps plugin de third party component.

\pagebreak

\section{Same-origin policy}
\label{Same_Origin_Policy}
Voor de beveiliging van mashups is de same-origin een belangrijk concept.
Het is het standaard beveiligingsconcept voor de client-side programmeertalen dat in alle huidige browsers aanwezig is.
De Same-Origin Policy(SOP) scheidt code over verschillende uitvoeringscontexten gebaseerd op hun origin. 
Een \emph{origin} is gedefinieerd als een triple bestaande uit; een domeinnaam, applicatie laag protocol en poortnummer (bv. (www.voorbeeld.be, http, 80)). 
De SOP laat nu toe dat stukken code die van dezelfde origin afkomstig zijn, hun context volledig delen. 
Dit wil zeggen dat ze aan elkaars functies en inhoud kunnen. Als stukken code verschillende origins hebben kunnen ze dit niet. 
Dit dient om te voorkomen dat er gevoelige data van andere sites kan gestolen worden zoals bijvoorbeeld cookies of login gegevens. 
Ook het sturen van requests naar een server is niet mogelijk vanuit een andere origin (zie Figuur \ref{SOP_example}).

	\begin{figure}
		\centering
 		\includegraphics[width=0.80\textwidth]{img/SOP_example.jpg}
 		\caption{Same-Origin Policy voorbeeld: Website a met iframe b}
 		\label{SOP_example}
	\end{figure}

\section{JavaScript}
\label{JavaScript}
Buiten de server-side webtalen \textit{(E.g. PHP)} is er aan de kant van de client ook een programmeertaal beschikbaar, 
JavaScript genaamd. JavaScript code kan meegestuurd worden in de HTML-pagina om op de client-side uit te voeren.
Dit om bijvoorbeeld een meer interactieve web ervaring aan de gebruiker te bieden.  
Ook communicatie tussen verschillende mashup componenten is mogelijk via JavaScript,
eventueel beperkt door de Same-Origin Policy. JavaScript kan in de browser ook uitgeschakeld worden. 
Dit wil zeggen dat er geen enkele functionaliteit van JavaScript beschikbaar is en enkel de gegenereerde HTML getoond kan worden. 
Het blijkt wel zo te zijn dat JavaScript ondertussen zo veel gebruikt wordt, 
dat het bijna niet meer mogelijk is om sommige websites te gebruiken als JavaScript niet aan staat.
Denk maar aan facebook, waarbij het overgrote deel van de functionaliteiten er gebruik van maakt.
